package com.mutual.assistance.user.service;


import com.mutual.assistance.user.model.dto.MenuDTO;
import com.mutual.assistance.user.model.dto.MenusDTO;
import com.mutual.assistance.user.model.vo.AddMenuVO;
import com.mutual.assistance.user.model.vo.UpdateMenuVO;

import java.util.List;

/**
 * @author chenyuxin
 * @version 1.0
 * @description 权限修改服务
 * @date 2023/4/17 16:41
 */
public interface AuthorityMenuService {

    /**
     * @param menuVO 传入添加菜单参数
     * @return boolean 是否成功
     * @description 添加一条菜单资源
     * @author chenyuxin
     * @date 2023/4/17 18:43
     */
    boolean addMenu(AddMenuVO menuVO);

    /**
     * @param menuVOs 传入添加菜单参数
     * @return boolean 是否成功
     * @description 添加多条菜单资源
     * @author chenyuxin
     * @date 2023/4/17 22:24
     */
    boolean addMenus(List<AddMenuVO> menuVOs);

    /**
     * @param menuId 菜单主键
     * @return boolean 是否成功
     * @description 删除一条菜单资源
     * @author chenyuxin
     * @date 2023/4/17 23:09
     */
    boolean deleteMenu(String menuId);

    /**
     * @param menuIds 菜单主键集合
     * @return boolean 是否成功
     * @description 删除多条条菜单资源
     * @author chenyuxin
     * @date 2023/4/17 23:09
     */
    boolean deleteMenus(List<String> menuIds);

    /**
     * @param updateMenuVO 更新菜单参数
     * @return boolean
     * @description 更新菜单
     * @author chenyuxin
     * @date 2023/4/18 20:59
     */
    boolean updateMenu(UpdateMenuVO updateMenuVO);

    /**
     * @param menuId 菜单主键id
     * @return 单条菜单资源
     * @description 获取单条菜单资源
     * @author chenyuxin
     * @date 2023/4/18 21:57
     */
    MenuDTO getMenu(String menuId);

    /**
     * @return 所有菜单资源
     * @description 获取所有的
     * @author chenyuxin
     * @date 2023/4/18 22:15
     */
    List<MenuDTO> getMenus();

    /**
     * @return 层级资源
     * @description 按照层级获取所有菜单资源
     * @author chenyuxin
     * @date 2023/4/19 10:52
     */
    MenusDTO getMenusByLevel();

    /**
     * @return 排序后菜单
     * @description 按照排序获取所有菜单资源
     * @author chenyuxin
     * @date 2023/4/19 11:21
     */
    List<MenuDTO> getMenusBySort();

    /**
     * @description 获取该菜单主键已经它的所有子菜单
     * @param menuId 菜单主键
     * @return 包装的实体类
     * @author chenyuxin
     * @date 2023/4/19 11:24
    */
    MenusDTO recursionGetMenus(String menuId);


}
